package com.yitiao.designmodel.struct.flyweight;

/**
 * 享元模式和工厂模式都是创建型模式，它们的主要区别在于它们的目的不同。
 * 工厂模式的主要目的是封装对象的创建过程，将对象的创建和使用分离开来，从而提高系统的灵活性和可维护性。
 * 而享元模式的主要目的是尽可能地减少系统中对象的数量，从而提高系统的性能和效率。
 * 在享元模式中，对象的创建是一个比较昂贵的操作，因此我们希望尽可能地减少对象的创建次数，通过共享已有的对象来达到这个目的。
 * 因此，享元模式通常会结合工厂模式一起使用，通过享元工厂来管理和共享对象。
 */
public class MainTest {
    public static void main(String[] args) {
        FlyweightFactory factory = new FlyweightFactory();
        Flyweight flyweight1 = factory.getFlyweight("key1");
        Flyweight flyweight2 = factory.getFlyweight("key2");
        Flyweight flyweight3 = factory.getFlyweight("key1");

        flyweight1.operation();
        flyweight2.operation();
        flyweight3.operation();
    }
}
